package com.cloud.log.autolevel.util;

import com.cloud.log.autolevel.bean.LoggerConfig;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.lang.reflect.Type;
import java.util.List;

/**
 * @description: Gson-处理json字符串
 * @author zhangkaiqiang
 **/
public class GsonUtil<T> {


    /**
     * 生成JSON数据时保留键为Null的字段
     */
    private static Gson gson = new GsonBuilder().serializeNulls().create();


    /**
     * 格式化为Json数据
     * @param o 待格式化的对象
     * @return
     */
    public static String toJson(Object o) {
        return gson.toJson(o);
    }

    public static String toJson(Object o , Type type) {
        return gson.toJson(o,type);
    }


    /**
     * 字符串转对象
     * @param jsonstr
     * @param type
     * @param <T>
     * @return
     */
    public static <T> T toObject(String jsonstr , Type type) {
        return gson.fromJson(jsonstr,type);
    }


    /**
     * JSON字符串转换为List
     * @return: java.util.List<T>
     * @param liststr JSON数组字符串
     * @param t
     * @t 泛型对象  要转换到的对象
     */
    public static <T> List<T> toList(String liststr, com.google.common.reflect.TypeToken<List<LoggerConfig>> t) {
        List<T> resultlist = gson.fromJson(liststr,t.getType());
        return resultlist;
    }


//    public static void main(String[] args) {
//        String testJson="[{\"nickName\":\"9000641723\",\"phone\":\"11111111111\",\"uid\":9000641723},{\"nickName\":\"9000641947\",\"phone\":\"22222222222\",\"uid\":9000641947},{\"nickName\":\"9000641657\",\"phone\":\"33333333333\",\"uid\":9000641657},{\"nickName\":\"9000641657\",\"phone\":\"33333333333\",\"uid\":9000641657},{\"nickName\":\"9000641493\",\"phone\":\"33333333333\",\"uid\":9000641493}]";
//
//        List<GlobalUserVo> ts = toList(testJson,new TypeToken<List<GlobalUserVo>>(){});
//
//
//        ts.forEach(vo-> System.out.println(vo));
//    }
}
